home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Media 23
/
PC MEDIA CD23.iso
/
share
/
prog
/
pcl4w12
/
pcl4wref.doc
< prev
next >
Wrap
Text File
|
1995-08-07
|
52KB
|
1,497 lines
Personal Communications Library
For Windows
(PCL4W)
REFERENCE MANUAL
Version 1.2
August 8, 1995
This software is provided as-is.
There are no warranties, expressed or implied.
Copyright (C) 1995
All rights reserved
MarshallSoft Computing, Inc.
Post Office Box 4543
Huntsville AL 35815
Voice 205-881-4630
FAX 205-880-0925
BBS 205-880-9748
email msc@traveller.com
_______
____|__ | (R)
--+ | +-------------------
| ____|__ | Association of
| | |_| Shareware
|__| o | Professionals
--+--+ | +---------------------
|___|___| MEMBER
PCL4W Reference Manual Page 1
T A B L E
O F
C O N T E N T S
Chapter Page
Table of Contents..................................2
Introduction.......................................3
SioBaud.........................................4
SioBrkSig.......................................4
SioCTS..........................................5
SioDCD..........................................5
SioDone.........................................6
SioDSR..........................................6
SioDTR..........................................7
SioFIFO.........................................7
SioFlow.........................................8
SioGetc.........................................8
SioGetDiv.......................................9
SioInfo.........................................9
SioIRQ.........................................10
SioLine........................................10
SioLoopBack....................................11
SioModem.......................................11
SioParms.......................................12
SioPorts.......................................12
SioPutc........................................13
SioRead........................................13
SioReset.......................................14
SioRI..........................................14
SioRTS.........................................15
SioRxBuf.......................................15
SioRxFlush.....................................16
SioRxQue.......................................16
SioTxBuf.......................................17
SioTxFlush.....................................17
SioTxQue.......................................18
SioUART........................................18
SioUnGetc......................................19
Function Summary..................................20
Error Code Summary................................21
Code Examples.....................................21
PCL4W Reference Manual Page 2
Introduction
This manual lists all of the PCL4W functions in alphabetical order. Every
library function will return a value as follows:
1. Negative values for error conditions. See last page of this manual for
a list of error values and their meanings.
2. Non-negative values when returning data (eg: SioLine).
3. Zero otherwise.
When debugging an application, be sure to test all return values. Use
SioError() (see file SIOERROR.C) to print the associated text for errors.
Example Code Segment
+---------------------------------------------------------------+
| int Code; /* MUST be 'int', not 'char' */ |
| |
| Code = SioFunction( ); /* any PCL4W function */ |
| if(Code<0) |
| {/* error returned */ |
| SioError(Code); /* SioError prints error text */ |
| SioDone(Port); /* always call SioDone last */ |
| exit(1); |
| } |
| /* no errors */ |
| ...your application code... |
| |
+---------------------------------------------------------------+
The program SIMPLE is provided as a straight forward and simple example of
the use of the PCL4W library - at least as straight forward as any Windows
programming can be.
Also look at the TERM program, which is distributed separately from PCL4W as
WTERM12.ZIP. Many PCL4W functions are used somewhere in TERM. Other example
programs will be provided. Look for them on our User Support BBS.
Also note that there are two versions of the library. One version is with
transmitter interrupts disabled and one with transmitter interrupts enabled.
Refer to the User's Manual (PCL4W.USR) for additional information.
PCL4W Reference Manual Page 3
+-------------+------------------------------------------------------------+
| SioBaud | Sets the baud rate of the selected port. |
+-------------+------------------------------------------------------------+
Syntax int SioBaud(int Port,int BaudCode)
/* Port: Port selected (COM1 - COM20) */
/* BaudCode: Baud code */
Remarks The SioBaud function sets the baud rate without resetting the
port. It is used to change the baud rate after calling SioReset.
Code Rate Name Code Rate Name
0 300 Baud300 5 9600 Baud9600
1 600 Baud600 6 19200 Baud19200
2 1200 Baud1200 7 38400 Baud38400
3 2400 Baud2400 8 57600 Baud57600
4 4800 Baud4800 9 115200 Baud115200
Returns -4 : No such port. Expect 0 to MaxPort.
-11 : Bad baud rate code. See above code values.
See Also SioReset
+-------------+------------------------------------------------------------+
| SioBrkSig | Asserts, cancels, or detects BREAK signal. |
+-------------+------------------------------------------------------------+
Syntax int SioBrkSig(int Port,char Cmd)
/* Port: Port selected (COM1 thru COM20) */
/* char Cmd: ASSERT, CANCEL, or DETECT */
Remarks The SioBrkSig function controls the BREAK bit in the line status
register. The legal commands are:
ASSERT_BREAK ('A') to assert BREAK
CANCEL_BREAK ('C') to cancel BREAK
DETECT_BREAK ('D') to detect BREAK
ASSERT_BREAK, CANCEL_BREAK, and DETECT_BREAK are defined in
PCL4W.H. See TERM.C for an example of the use of SioBrkSig.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
-6 : Illegal command. Expected 'A', 'C', or 'D'.
>0 : BREAK signal detected (DETECT command only)
See Also N/A
PCL4W Reference Manual Page 4
+-------------+------------------------------------------------------------+
| SioCTS | Reads the Clear to Send (CTS) modem status bit. |
+-------------+------------------------------------------------------------+
Syntax int SioCTS(int Port)
/* int Port: Port selected (COM1 thru COM20) */
Remarks The SioCTS function is used to read the Clear to Send (CTS)
modem status bit.
The CTS line is used by some error correcting modems to
implement hardware flow control. CTS is dropped by the modem to
signal the computer not to send data and is raised to signal
the computer to continue.
Refer to the User's Manual for a discussion of flow control.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
0 : CTS is clear.
>0 : CTS is set.
See Also SioFlow, SioDSR, SioRI, SioDCD, and SioModem.
+-------------+------------------------------------------------------------+
| SioDCD | Reads the Data Carrier Detect (DCD) modem staus bit. |
+-------------+------------------------------------------------------------+
Syntax int SioDCD(int Port)
/* Port: Port selected (COM1 thru COM20) */
Remarks The SioDCD function is used to read the Data Carrier Detect
(DCD) modem status bit. Also see SioModem.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
0 : DCD is clear.
>0 : DCD is set.
See Also SioDSR, SioCTS, SioRI, and SioModem.
PCL4W Reference Manual Page 5
+-------------+------------------------------------------------------------+
| SioDone | Terminates further serial processing. |
+-------------+------------------------------------------------------------+
Syntax int SioDone(int Port)
/* Port: Port selected (COM1 thru COM20) */
Remarks The SioDone function terminates further serial processing.
SioDone MUST be called before exiting your application so that
interrupts can be restored to their original state. Failure to
do this can crash the operating system. If you forget to call
SioDone before exiting, be sure to re-boot your computer. You
can call SioDone even if SioReset has not been called, so it is
good practice to always call SioDone before exiting your
application.
Also note that SioDone dereferences the transmit and receive
buffers set up by SioRxQue and SioTxQue.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
See Also SioReset.
+-------------+------------------------------------------------------------+
| SioDSR | Reads the Data Set Ready (DSR) modem status bit. |
+-------------+------------------------------------------------------------+
Syntax int SioDSR(int Port)
/* Port: Port selected (COM1 thru COM20) */
Remarks The SioDSR function is used to read the Data Set Ready (DSR)
modem status bit. The DSR line is normally used by a serial
device (such as a modem) to signal the computer that it is
ready.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
0 : DSR is clear.
>0 : DSR is set
See Also SioCTS, SioRI, SioDCD, and SioModem
PCL4W Reference Manual Page 6
PCL4W Reference Manual Page 7
+-------------+------------------------------------------------------------+
| SioDTR | Set, clear, or read Data Terminal Ready (DTR) status bit. |
+-------------+------------------------------------------------------------+
Syntax int SioDTR(int Port,char Cmd)
/* Port: Port selected (COM1 thru COM20) */
/* Cmd: DTR command (SET, CLEAR, or READ) */
Remarks The SioDTR function controls the Data Terminal Ready (DTR) bit
in the modem control register. DTR should always be set when
communicating with a modem. Commands (defined in PCL4W.H) are:
SET_LINE ('S') to set DTR (ON)
CLEAR_LINE ('C') to clear DTR (OFF)
READ_LINE ('R') to read DTR
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
-5 : Not one of 'S', 'C', or 'R'.
0 : DTR is OFF (READ_LINE Command).
>0 : DTR is ON (READ_LINE Command).
See Also SioRTS.
+-------------+------------------------------------------------------------+
| SioFIFO | Sets the FIFO trigger level (16550 UART only). |
+-------------+------------------------------------------------------------+
Syntax int SioFIFO(int Port,int LevelCode)
/* Port: Port selected (COM1 thru COM20) */
/* LevelCode: FIFO level code (see below) */
Remarks The SioFIFO function is used to enable both transmit & receive
FIFOs for 16550 UARTS, and to set the trigger level at which
receive interrupts are generated.
For example, if the FIFO level is set to 8, then the 16550 UART
will not generate an interrupt until 8 bytes have been received.
This reduces the number of interrupts generated and allows
faster processing with slower machines or when running
simultaneous ports.
In order to take advantage of the TX FIFO, use the PCL4W library
with TX interrupts enabled.
In order to test if your port is a 16550 UART, call SioFIFO with
a LevelCode of other than FIFO_OFF. SioFIFO can be called for
the 8250 and 16450 UART without ill effect.
Code PCL4W.H Name Trigger Level
-1 FIFO_OFF Disable FIFO
0 LEVEL_1 1 byte
1 LEVEL_4 4 bytes
2 LEVEL_8 8 bytes
3 LEVEL_14 14 bytes
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
>0 : FIFO level set.
0 : FIFO level not set (not 16550).
PCL4W Reference Manual Page 8
+------------+-------------------------------------------------------------+
| SioFlow | Sets hardware (RTS/CTS) flow control. |
+------------+-------------------------------------------------------------+
Syntax int SioFlow(int Port,int Flag)
/* Port: Port selected (COM1 thru COM20) */
/* Flag: TRUE to enable flow control */
Remarks The SioFlow function is used to enable or disable hardware flow
control. Hardware flow control uses RTS and CTS to control data
flow between the modem and the computer. Refer to the User's
Manual for a discussion of flow control. To enable hardware
flow control, call SioFlow with Flag=TRUE.
In order for hardware flow control to work correctly, your modem
must also be configured to work with hardware flow control, and
your computer to modem cable must have RTS and CTS wired
straight through. If you enable hardware flow control, do not
modify the RTS line (by calling SioRTS) unless you know
exactly what you are doing.
Flow control is disabled after resetting a port. To explicitly
disable hardware flow control, call SioFlow with Flag=FALSE.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
=0 : Flow control disabled.
>0 : Flow control enabled.
See Also SioPutc
+------------+-------------------------------------------------------------+
| SioGetc | Reads the next character from the serial line. |
+------------+-------------------------------------------------------------+
Syntax int SioGetc(int Port)
/* Port: Port selected (COM1 thru COM20) */
Remarks The SioGetc function reads a byte from the selected serial port.
The function will return immediately if no serial byte is ready.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
-1 : If timed out.
>0 : Character read.
See Also SioUnGetc and SioPutc.
PCL4W Reference Manual Page 9
+---------------+----------------------------------------------------------+
| SioGetDiv | Reads the baud rate divisor. |
+---------------+----------------------------------------------------------+
Syntax int SioGetDiv(int Port)
/* Port: Port selected (COM1 thru COM20) */
Remarks The SioGetDiv function reads the baud rate divisor. The baud
rate can then be determined by the divisor:
Baud Divisor Baud Divisor Baud Divisor
300 0180 4800 0018 38400 0003
1200 0060 9600 000C 57600 0002
2400 0030 19200 0006 115200 0001
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
>0 : Baud rate divisor.
See Also SioParms.
+-------------+------------------------------------------------------------+
| SioInfo | Returns PCL4W library information. |
+-------------+------------------------------------------------------------+
Syntax int SioInfo(char Cmd)
/* Cmd: Command ('V', 'I', 'T', 'R') */
Remarks The SioInfo function returns an integer code corresponding to
either the (1) library version number, (2) whether or not
transmitter interrupts are enabled, (3) the number of
transmitter interrupts, and (4) the number of receiver
interrupts.
Returns Version ('V')
hex byte XY where version is denoted as X.Y
TX Interrupts ('I')
TRUE if transmitter interrupts are enabled in the library,
otherwise FALSE.
TX Interrupts Generated ('T')
Returns the total number of transmitter interrupts generated.
This will be 0 unless transmitter interrupts are enabled.
RX Interrupts Generated ('R')
Returns the total number of receiver interrupts generated.
PCL4W Reference Manual Page 10
+-------------+------------------------------------------------------------+
| SioIRQ | Assigns an IRQ line to a port. |
+-------------+------------------------------------------------------------+
Syntax int SioIRQ(int Port,intIRQcode)
/* Port: Port selected (COM1 thru COM20) */
/* IRQcode: IRQ number [IRQ2..IRQ15] */
Remarks The SioIRQ function assigns an IRQ line to a port. That is,
SioIRQ maps an IRQ to a port. SioIRQ (like SioUART) must be
called before calling SioReset. Unless you have a non-standard
(COM1 & COM3 use IRQ4 while COM2 & COM4 use IRQ3) serial port
configuration (or don't want to run more than 2 ports
concurrently), you will not need to call SioIRQ. Be EXTREMELY
careful with SioIRQ as it can lock your machine up if given
incorrect information.
In particular, remember that your port hardware must generate
the interrupt that you have specified. You should refer to your
serial board hardware manual for specfic instructions in
configuring your hardware. Be sure to call SioPorts first to
setup DigiBoard ports if you have them. Refer to the PCL4W
Users Manual for additional information.
Returns -4 : No such port. Expect 0 to MaxPort.
-15 : Port already enabled. SioReset has already been called.
-7 : No such IRQ.
-18 : ISR limit (maximum of 4 PC IRQs) exceeded.
0 : Otherwise
See Also SioUART and SioPorts.
+-------------+------------------------------------------------------------+
| SioLine | Reads the line status register. |
+-------------+------------------------------------------------------------+
Syntax int SioLine(int Port)
/* Port: Port selected (COM1 thru COM20) */
Remarks The SioLine function reads the line status register. The
individual bit masks are as follows:
0x40 = Transmitter empty.
0x20 = Transmitter buffer empty.
0x10 = Break detected.
0x08 = Framming error.
0x04 = Parity error.
0x02 = Overrun error.
0x01 = Data ready.
The above are documented in the file PCL4W.H.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
>0 : Line status (rightmost byte of word).
See Also SioModem.
PCL4W Reference Manual Page 11
+-------------+------------------------------------------------------------+
| SioLoopBack | Does a UART loopback test. |
+-------------+------------------------------------------------------------+
Syntax int SioLoopBack(int Port)
/* Port: Port selected (COM1 thru COM20) */
Remarks SioLoopBack makes use of the built in loopback test capability
of the INS8250 family UART. Normally SioLoopBack will never
need to be called unless you suspect that your UART is bad. Many
UARTs must be reset after running a loopback test.
Returns 0 : Loopback test is successfull.
-2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
-12 : Loopback test fails.
+-------------+------------------------------------------------------------+
| SioModem | Reads the modem status register. |
+-------------+------------------------------------------------------------+
Syntax int SioModem(int Port, int Mask)
/* Port: Port selected (COM1 thru COM20) */
/* Mask: Modem function mask */
Remarks The SioModem function reads the modem register. The bit
definitions for the function mask are as follows:
Bit Name Function Bit Name Function
7 DCD Data Carrier Detect 3 DeltaDCD DCD has changed
6 RI Ring Indicator 2 DeltaRI RI has changed
5 DSR Data Set Ready 1 DeltaDSR DSR has changed
4 CTS Clear To Send 0 DeltaCTS CTS has changed
Bits 4 through 7 represent the absolute state of their
respective RS-232 inputs. Bits 0 through 3 represent a change
in the state of their respective RS-232 inputs since last read.
Once UART register 3 is read, the Delta bits are cleared. Thus,
it is best not to depend on the Delta bits.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
>0 : Modem status (rightmost byte of word).
See Also SioCTS, SioDCD, SioDSR and SioRI.
PCL4W Reference Manual Page 12
+-------------+------------------------------------------------------------+
| SioParms | Sets parity, stop bits, and word length. |
+-------------+------------------------------------------------------------+
Syntax int SioParms(int Port,int Parity,int StopBits, int DataBits)
/* Port: Port selected (COM1 - COM20) */
/* Parity: Parity code [0,1,2] */
/* StopBits: Stop bits code [0,1] */
/* DataBits: Word length code [0,1,2,3] */
Remarks The SioParms function sets the parity, stop bits, and word
length. If the default parity (none), stop bits (1), or word
length (8) is not acceptable, then they can be changed by
calling SioParms. SioParms can be called either before or after
calling SioReset. See file PCL4W.H. (8 = default)
Value Description PCL4W.H Name
ParityCode: *0 no parity NoParity
1 odd parity OddParity
3 even parity EvenParity
StopBitsCode: *0 1 stop bit OneStopBit
1 2 stop bits TwoStopBits
WordLengthCode: 0 5 data bits WordLength5
1 6 data bits WordLength6
2 7 data bits WordLength7
*3 8 data bits WordLength8
Returns -4 : No such port. Expect 0 to MaxPort.
-7 : Bad parity code selected. Expecting 0 to 2.
-8 : Bad stop bits code. Expecting 0 or 1.
-9 : Bad word length code. Expecting 0 to 3.
See Also SioReset.
+-------------+------------------------------------------------------------+
| SioPorts | Sets number of PC & Digiboard / BOCA Board ports. |
+-------------+------------------------------------------------------------+
Syntax int SioPorts(int NbrPorts,int FirstPort,int StatusReg,
int Code)
/* NbrPorts: Total number of ports */
/* FirstPort: First DigiBoard port */
/* StatusReg: DigiBoard Status Register */
/* Code: PC_PORTS, DIGIBOARD, or BOCABOARD */
Remarks The SioPorts function must be called before ANY other serial
functions. The purpose of the SioPorts function is to set the
total number of ports, the first DigiBoard (or BOCA board) port
and the DigiBoard (or BOCA board) status register address.
Once SioPorts is called, all COM ports starting with "FirstPort"
will be treated as DigiBoard (or BOCA board) ports. The default
setup is 4 standard PC ports and no DigiBoard or BOCA ports [
SioPorts(4,4,0,PC_PORTS) ].
Refer to ther PCL4W users maniual for more information on the
DigiBoard and BOCA board.
Returns -4 : No such port. Expect 0 to 9.
0 : No error (sets MaxPort to NumberPorts-1).
See Also SioUART, SioIRQ, and Code Examples.
PCL4W Reference Manual Page 13
+-------------+------------------------------------------------------------+
| SioPutc | Transmit a character over a serial line. |
+-------------+------------------------------------------------------------+
Syntax int SioPutc(int Port,char Ch)
/* Port: Port selected (COM1 thru COM20) */
/* Ch: Character to send */
Remarks The SioPutc function transmits one character over the selected
serial line.
If flow control has been enabled, then SioPutc may return a -1
(time out) if the number of tics specified in the SioFlow
function was exceeded waiting for the modem to raise CTS.
Refer to the User's Manual for a discussion of flow control.
If transmitter interrupts are enabled (there are separate
versions of the library for transmitter interrupts enabled),
then the byte is placed in the transmit buffer, awaiting
transmission by the PCL4W interrupt service routine.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
-1 : Timed out waiting for CTS (flow control enabled)
See Also SioGetc and SioFlow.
+-------------+------------------------------------------------------------+
| SioRead | Reads any UART register. |
+-------------+------------------------------------------------------------+
Syntax int SioRead(int Port,int Reg)
/* Port: Port selected (COM1 thru COM20) */
/* Reg: UART register (0 to 7) */
Remarks The SioReset function directly reads the contents of any of the
7 UART registers. This function is useful when debugging
application programs and as a method for verifying UART
contents. Refer to the PCL4W Users Manual for a discussion of
the 7 UART registers.
The line status register (register 5) can also be read with
SioLine while the modem status register (register 6) can also be
read with SioModem. Refer to the PCL4W User's Manual for a
discussion of the UART registers.
Returns -3 : No buffer available. Call SioRxBuf first.
-4 : No such port. Expect 0 to MaxPort.
See Also SioLine and SioModem.
PCL4W Reference Manual Page 14
+-------------+------------------------------------------------------------+
| SioReset | Initialize a serial port for processing. |
+-------------+------------------------------------------------------------+
Syntax int SioReset(int Port,int BaudCode)
/* Port: Port selected (COM1 thru COM20) */
/* BaudCode: Baud code or -1 */
Remarks The SioReset function initializes the selected serial port.
SioReset should be called after calling SioParm and SioRxBuf but
before making any other calls to PCL4W. SioReset uses the
parity, stop bits, and word length value previously set if
SioParm was called, otherwise the default values (see SioParm)
are used.
Recall that COM1 and COM3 share the same interrupt vector and
therefore cannot operate simultaneously. Similiarly, COM2 and
COM4 cannot operate simultaneously. Any other combination of two
ports can be used.
By specifing NORESET (-1) for the baud rate code, the port will
NOT be reset. This is used to "take over" a port from a host
communications program that allows a "DOS gateway". External
protocols can be implemented this way. See SioBaud for a list
of the baud rate codes, or see "PCL4W.H".
Returns -3 : No buffer available. Call SioRxBuf first.
-4 : No such port. Expect 0 to MaxPort.
-11 : Bad baud rate code selected. Expecting 0 to 9.
-13 : UART undefined. SioUART(Port,0) was called previously.
-14 : Bad or missing UART. You may not have hardware present.
-15 : Port already enabled. SioReset has already been called.
-16 : Interrupt already in use.
See Also SioBaud, SioParms, SioRxBuf, SioDone, and SioUART.
+-------------+------------------------------------------------------------+
| SioRI | Reads the Ring Indicator (RI) modem status bit. |
+-------------+------------------------------------------------------------+
Syntax int SioRI(int Port)
/* Port: Port selected (COM1 thru COM20) */
Remarks The SioRI function is used to read the Ring Indicator
(RI) modem status bit. Also see SioModem.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
0 : RI is clear.
>0 : RI is set (RING has occurred).
See Also SioDSR, SioCTS, SioDCD, and SioModem.
PCL4W Reference Manual Page 15
+-------------+------------------------------------------------------------+
| SioRTS | Sets, clears, or reads the Request to Send (RTS) line. |
+-------------+------------------------------------------------------------+
Syntax int SioRTS(Port, char Cmd)
/* Port: Port selected (COM1 thru COM20) */
/* Cmd: RTS command (SET, CLEAR, or READ) */
Remarks The SioRTS function controls the Request to Send (RTS bit in the
modem control register.
The RTS line is used by some error correcting modems to
implement hardware flow control. RTS is dropped by the computer
to signal the modem not to send data, and is raised to signal
the modem to continue. RTS should be set when communicating with
a modem unless Flow Control is being used.
Refer to the User's Manual for a discussion of flow control.
Commands (defined in PCL4W.H) are:
SET_LINE ('S') - set RTS (ON)
CLEAR_LINE ('C') - clear RTS (OFF)
READ_LINE ('R') - read RTS
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
-5 : Command is not one of 'S', 'C', or 'R'.
0 : RTS is OFF (READ_LINE Command).
>0 : RTS is ON (READ_LINE Command).
See Also SioFlow and SioDTR.
+------------+-------------------------------------------------------------+
| SioRxBuf | Sets up receive buffers. |
+------------+-------------------------------------------------------------+
Syntax int SioRxBuf(int Port,int Selector,SizeCode)
/* Port: Port selected (COM1 thru COM20) */
/* Selector: Receive buffer selector */
/* SizeCode: Buffer size code */
Remarks The SioRxBuf function passes the address selector and size of
the receive buffer to PCL4W. Recall that PCL4W requires a
receive buffer for each port in simultaneous operation since the
receive function is interrupt driven. It must be called before
any incoming characters can be received. SioRxBuf must be called
before SioReset. Buffer size codes are listed in "PCL4W.H".
Size Code Buffer Size PCL4W.H Name
4 128 bytes Size128
5 256 bytes Size256
6 512 bytes Size512
7 1024 bytes Size1024 or Size1K
8 2048 bytes Size2048 or Size2K
9 4096 bytes Size4096 or Size4K
10 8192 bytes Size8192 or Size8K
11 16384 bytes Size16384 or Size16K
12 32768 bytes Size32768 or Size32K
Returns -4 : No such port. Expect 0 to MaxPort.
-10 : Bad buffer size code. Expecting 0 to 11.
See Also SioReset and Code Examples.
PCL4W Reference Manual Page 16
+------------+-------------------------------------------------------------+
| SioRxFlush | Flushes (clears) the receive buffer. |
+------------+-------------------------------------------------------------+
Syntax int SioRxFlush(int Port)
/* Port: Port selected (COM1 thru COM20) */
Remarks The SioRxFlush function will delete any characters in the
receive buffer for the specified port. After execution, the
receive buffer will be empty. Call SioRxBuf after resetting a
port in order to delete any spurious characters.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
See Also SioRxQue.
+-------------+------------------------------------------------------------+
| SioRxQue | Returns the number of bytes in the receive queue. |
+-------------+------------------------------------------------------------+
Syntax int SioRxQue(int Port)
/* Port: Port selected (COM1 thru COM20) */
Remarks The SioRxQue function will return the number of characters in
the receive queue at the time of the call. It can be used to
implement XON/XOFF flow control.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
See Also SioRxFlush.
PCL4W Reference Manual Page 17
+------------+-------------------------------------------------------------+
| SioTxBuf | Sets up transmitter buffer. |
+------------+-------------------------------------------------------------+
Syntax int SioTxBuf(int Port,int Selector,int SizeCode)
/* Port: Port selected (COM1 thru COM20) */
/* Selector: Receive buffer selector */
/* SizeCode: Buffer size code */
Remarks The SioTxBuf function passes the address selector and size of
the transmit buffer to PCL4W, provided that you will link with a
PCL4W library with transmitter interrupts enabled. PCL4W
requires a transmit buffer for each port in simultaneous
operation if you are using the version of the library with
transmitter interrupts enabled (PCL4W2.LIB). SioTxBuf() must be
called before SioReset.
Size Code Buffer Size PCL4W.H Name
4 128 bytes Size128
5 256 bytes Size256
6 512 bytes Size512
7 1024 bytes Size1024 or Size1K
8 2048 bytes Size2048 or Size2K
9 4096 bytes Size4096 or Size4K
10 8192 bytes Size8192 or Size8K
11 16384 bytes Size16384 or Size16K
12 32768 bytes Size32768 or Size32K
This function is not used unless the transmitter interrupts are
enabled (PCL4W2.LIB). Refer to the PCL4W Users Manual for
information on transmitter (TX) interrupts.
Returns -4 : No such port. Expect 0 to MaxPort.
-10 : Bad buffer size code. Expecting 0 to 11.
See Also SioRxBuf, SioReset and Code Examples.
+------------+-------------------------------------------------------------+
| SioTxFlush | Flushes (clears) the transmitter buffer. |
+------------+-------------------------------------------------------------+
Syntax int SioTxFlush(int Port)
/* Port: Port selected (COM1 thru COM20) */
Remarks The SioTxFlush function will delete any characters in the
transmit buffer for the specified port, provided that you will
link with a PCL4W library with transmitter interrupts enabled.
After execution, the transmit buffer will be empty.
Once this function is called, any character in the transmit
buffer (put there by SioPutc) will be lost and therefore not
transmitted. This function is not used unless the transmitter
interrupts are enabled Refer to the PCL4W Users Manual for
information on transmitter (TX) interrupts.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
See Also SioTxQue.
PCL4W Reference Manual Page 18
+------------+-------------------------------------------------------------+
| SioTxQue | Returns the number of bytes in the transmit queue. |
+------------+-------------------------------------------------------------+
Syntax int SioTxQue(int Port)
/* Port: Port selected (COM1 thru COM20) */
Remarks The SioTxQue function will return the number of characters in
the transmit queue at the time of the call, provided that you
will link with a PCL4W library with transmitter interrupts
enabled.
This function is not used unless the transmitter interrupts are
enabled. Refer to the PCL4W Users Manual for information on
transmitter (TX) interrupts.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
See Also SioTxFlush.
+------------+-------------------------------------------------------------+
| SioUART | Sets the UART base address. |
+------------+-------------------------------------------------------------+
Syntax int SioUART(int Port,int Address)
/* Port: Port selected (COM1 thru COM20) */
/* Address: UART address */
Remarks The SioUART function sets the UART base address for the
specified port. SioUART must be called before SioReset in order
to have effect. Be extremely sure that you know what you are
doing! Note that PCL4W uses the standard PC/XT/AT port
addresses, interrupt request lines, and interrupt service
vectors. Therefore, this function is only needed for
non-standard ports.
Returns >0 : The previous base address for this port.
-4 : No such port. Expect 0 to MaxPort.
-15 : Port already enabled. SioReset has already been called.
See Also SioPorts, SioIRQ, and SioReset.
PCL4W Reference Manual Page 19
+------------+-----+-------------------------------------------------------+
| SioUnGetc | "Un|gets" the last character read with SioGetc(). |
+------------+-----+-------------------------------------------------------+
Syntax int SioUnGetc(int Port,char Ch)
/* Port: Port selected (COM1 thru COM20) */
/* Ch: Character to unget */
Remarks The SioUnGetc function returns ("pushes") the character back
into the serial input buffer. The character pushed will be the
next character returned by SioGetc. Only one character can be
pushed back. This function works just like the "ungetc" function
in the C language.
Returns -2 : Port not enabled. Call SioReset first.
-4 : No such port. Expect 0 to MaxPort.
See Also SioReset.
PCL4W Reference Manual Page 20
Function Sumary
+-------------+----------+----------+----------+----------+
| Function | Arg1 | Arg2 | Arg3 | Arg4 |
+-------------+----------+----------+----------+----------+
| SioBaud | Port | BaudCode | | |
| SioBrkSig | Port | Cmd | | |
| SioCTS | Port | | | |
| SioDCD | Port | | | |
| SioDone | Port | | | |
| SioDSR | Port | | | |
| SioDTR | Port | Cmd | | |
| SioError | Code | | | |
| SioFIFO | Port | FIFOcode | | |
| SioFlow | Port | | | |
| SioGetDiv | Port | | | |
| SioGetc | Port | | | |
| SioInfo | Cmd | | | |
| SioIRQ | Port | IRQcode | ISRcode | |
| SioLine | Port | | | |
| SioLoopBack | Port | | | |
| SioModem | Port | Mask | | |
| SioParms | Port | Parity | StopBits |WordLength|
| SioPorts | NbrPorts | FirstDBP |StatusReg | Code |
| SioPutc | Port | Ch | | |
| SioRead | Port | Register | | |
| SioReset | Port | BaudCode | | |
| SioRI | Port | | | |
| SioRTS | Port | Cmd | | |
| SioRxBuf | Port | Buffer | SizeCode | |
| SioRxFlush | Port | | | |
| SioRxQue | Port | | | |
| SioTxBuf | Port | Buffer | SizeCode | |
| SioTxFlush | Port | | | |
| SioTxQue | Port | | | |
| SioUART | Port | Address | | |
| SioUnGetc | Port | Ch | | |
+-------------+----------+----------+----------+----------+
PCL4W Reference Manual Page 21
Error Code Summary
+------+--------------------------------------------------------+
| Code | Description |
+------+--------------------------------------------------------+
| 0 | No error. |
| -1 | Timeout waiting for I/O. |
| -2 | Port not enabled. Call SioReset first. |
| -3 | No buffer available. Call SioRxBuf first. |
| -4 | No such port. Expect 0 to MaxPort. (COM1 = 0) |
| -5 | Expected 'S', 'C', or 'R' as 2nd argument. |
| -6 | Expected 'A', 'C', or 'D' as 2nd argument. |
| -7 | Bad parity code specified. Expected 0 to 7. |
| -8 | Bad stop bits code specified. Expected 0 or 1. |
| -9 | Bad wordlength code specified. Expect 0 to MaxPort. |
| -10 | Bad buffer size code specified. Expected 0 to 11. |
| -11 | Bad baud rate code. Expected 0 to 9. |
| -12 | Loopback test fails. |
| -13 | UART undefined. |
| -14 | Missing or bad UART. (no UART hardware ?) |
| -15 | Port already enabled. |
| -16 | ISR (interrupt) already in use. |
| -17 | No such IRQ. (Should be 2 to 15) |
| -18 | ISR limit (maximum of 4 PC IRQs) exceeded. |
| -19 | Failed to call PostMainHandle before SioReset. |
+------+--------------------------------------------------------+
Code Examples
SioRxBuf() Example
dwValue = GlobalDosAlloc(1024));
if(dwValue)
{/* get selector & lock */
RxSelector = LOWORD(dwValue);
GlobalPageLock(RxSelector);
/* pass selector to PCL4W */
SioRxBuf(Port,RxSelector,Size1024);
}
DigiBoard Example
/* use 0x140 for odd IRQs & 0x141 for even IRQs */
SioPorts(8,COM1,0x140,DIGIBOARD);
for(i=COM1;i<=COM20;i++)
{/* set DigiBoard UART addresses */
SioUART(i,0x100+8*i);
/* set DigiBoard for IRQ5 */
SioIRQ(i,IRQ5);
}
BOCA Board Example
/* use base port + 7 */
SioPorts(16,COM1,0x100+7,BOCABOARD);
for(i=COM1;i<=COM16;i++)
{/* set BOCA Board UART addresses */
SioUART(i,0x100+8*i);
/* set DigiBoard for IRQ15 */
SioIRQ(i,IRQ15);
}
PCL4W Reference Manual Page 22